Display remoting protocols are used in a variety of contexts for transmitting computer display information from a source location to a destination. In virtual desktop infrastructure (VDI) systems, a display remoting protocol allows a user at a client device to view and interact with a virtual machine hosted remotely from the user. However, display remoting protocols are also used in many other circumstances, including desktop sharing and web conference hosting software, software that enables users to access their home or office personal computer when travelling, and other remote desktop services that present individual application GUIs to remote users. There are a large variety of display remoting protocols available or known, including RDP and RemoteFX available from Microsoft, Inc., ICA and HDX available from Citrix Systems, Inc., EOP available from Quest, SPICE available from Red Hat, RGS available from HP, ALP and AIP available from Oracle Corporation, PCoIP available from Teradici Corporation, and VNC/RFB available from RealVNC, Ltd, with variants of VNC/RFB being otherwise available under open source licenses.
One challenge for display remoting protocols is to deliver a fluid GUI experience from the host to the client device while minimizing network bandwidth and both host and client device computer processing unit (CPU) resources. Some display remoting protocols meet the challenge by employing video compression schemes to reduce the amount of image content sent over the network. Moreover, because many images are transmitted from the server to the client device multiple times during a user's VDI session, some display remoting protocols have been proposed that include client-side caching to store image content on the client device for reuse. For example, if a user minimizes a window, and then restores the minimized window, client-side caching can be used to restore the window using image data retrieved from the cache without retransmitting the graphical data from the server. If the server detects that a needed image is already cached by the client device, the client device can be instructed to use the cached copy.
As the size of the cache is increased, more image data may be stored in the cache, thus increasing the likelihood that the client device will be storing a needed image in the cache. Although having a large cache capacity is desirable because it reduces the need for the host to retransmit images to the client device, many client devices are memory-constrained such as thin clients and mobile devices so it is not always possible to simply increase the cache size to improve cache performance.